// 1.4.0.2 运算符-位运算符-进制数正负数转化
/**
 * 
 * 先来举2个栗子（正数转负数的概览过程）：
 * 将1转换成二进制数据为  0000 0000 0000 0000 0000 0000 0000 0001
 * 学过计算机的，都知道最高位代表符号位，0为正，1为负，所以得到的二进制为 1000 0000 0000 0000 0000 0000 0000 0001
 * 但计算机还会进行反码和补码，有兴趣的可以自己查，我只说过程，除了最高位，其他都取反，即0变1，1变0 
 * 1111 1111 1111 1111 1111 1111 1111 1110
 * 最后，还要对以上得到的结果 +1
 * 1111 1111 1111 1111 1111 1111 1111 1111
 * 总结过程：
 * a.最高位改成1
 * b.除了最高位，其他位取反
 * c.结果+1
 * d.得到的结果就是对应的负值
 * 负值转正值，没啥说的，把以上过程倒过来~
 * 
 * 1.表示法
 * 整数、负数
 * + 正数5的表示法
 *   假设有一个 int 类型的数5,它在计算机中表示为:00000000 00000000 00000000 00000101;(5转换成二制是101，不过int类型的数占用4字节（32位），所以前面填了一堆0)
 * + 负数-5的表示法
 *   在计算机中，负数以原码的补码形式表达
 * 2.概念
 * 原码、反码、补码
 * + 原码
 * 一个正数，按照绝对值大小转换成的二进制数；一个负数按照绝对值大小转换成的二进制数，然后最高位补1，称为原码,比如:
 * 00000000 00000000 00000000 00000101 是 5的 原码。
 * 10000000 00000000 00000000 00000101 是 -5的 原码。
 * 
 * + 反码
 * 正数的反码与原码相同,负数的反码为:对该数的原码除符号位外各位取反[每一位取反(除符号位)]。
 * 取反操作指：原为1，得0；原为0，得1。（1变0; 0变1）比如：
 * 正数 00000000 00000000 00000000 00000101  的反码还是 00000000 00000000 00000000 00000101
 * 负数 10000000 00000000 00000000 00000101  的反码则是 11111111 11111111 11111111 11111010。
 * 反码是相互的，所以也可称：10000000 00000000 00000000 00000101 和 11111111 11111111 11111111 11111010互为反码
 * 
 * + 补码
 * 正数的补码与原码相同，负数的补码为对该数的原码除符号位外各位取反，然后在最后一位加1;比如：
 * 10000000 00000000 00000000 00000101 的反码是：11111111 11111111 11111111 11111010;
 * 补码：11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
 * 备注：
 * 1、从补码求原码的方法跟原码求补码是一样的 ，也可以通过完全逆运算来做，先减一，再取反
 * 2、补码却规定0没有正负之分
 * 因此，-5 在计算机中表达为：11111111 11111111 11111111 11111011。转换为十六进制：0xFFFFFFFB
 * 再对补码举个栗子，我们来看整数-1在计算机中如何表示。假设这也是一个int类型，那么：
 * （1）、先取-1的原码：10000000 00000000 00000000 00000001
 * （2）、得反码：     11111111 11111111 11111111 11111110（除符号位按位取反）
 * （3）、得补码：     11111111 11111111 11111111 11111111
可见,-1在计算机里用二进制表达就是全1。16进制为：0xFFFFFF
 * 3.总结
 * 正数的反码和补码都与原码相同。
 * 负数的反码为对该数的原码除符号位外各位取反。
 * 负数的补码为对该数的原码除符号位外各位取反，然后在最后一位加1
 * 源码：优点在于换算简单 缺点在于两个零 加减法需要独立运算
 * 反码：有点在于表示清晰 缺点在于两个零 加减法同样需要独立运算
 * 补码：优点在于一个零 范围大  减法可以转为加法 缺点在于理解困难
 * 
 * 下面是书上原文：
 * 原码表示法规定：用符号位和数值表示带符号数，正数的符号位用“0”表示，负数的符号位用“1”表示，数值部分用二进制形式表示。
 * 反码表示法规定：正数的反码与原码相同，负数的反码为对该数的原码除符号位外各位取反。
 * 补码表示法规定：正数的补码与原码相同，负数的补码为对该数的原码除符号位外各位取反，然后在最后一位加1.
 * 正零和负零的补码相同，[+0]补=[-0]补=0000 0000B
 * 
*/

#include <iostream>

int main(void)
{
  

  printf("----------end-----------\n");
  return 0;
}